The proliferation of personal computers over the last decade has caused a virtual revolution in the way computers are used in our society. Prior to the advent of the personal computer, data processing systems and the application programs run on them were generally large and complex and run by professionals. Persons other than computer professionals would normally have only limited access to the computer and application programs through remote terminals for purposes such as data input and making inquiries. In this environment the "user friendliness? of an application program was of only secondary importance since the professional users had the aptitude, motivation and time to become intimately familiar with the workings of each program they were dealing with.
All this has changed as a result of the personal computer. Now vast numbers of people with little or no training or aptitude in data processing have personal computers immediately available to them in their work places and oftentimes at home as well. This personal computer revolution has created an entire industry devoted to providing applications software with the result that large numbers of powerful application programs have become available for uses such as word processing, report generating, data bases, spread sheets and integrated programs combining several of these functions.
The availability of such powerful application programs for personal computers has the potential for making heretofore undreamed of computer power available to individuals in all walks of life. However, some basic problems have caused this potential to be realized only to a very limited extent. The primary interface with the user for most personal computer application programs is the computer keyboard. This keyboard is generally similar to the standard typewriter keyboard, often with the addition of a number of special function keys. To cause an application program to perform a particular function or operation, the user enters appropriate commands by striking one or more keys on the keyboard. It is generally desireable to require as few key strokes as possible for each instruction, so that an experienced user can operate the program rapidly. This however, results in the combination of keys for many instructions being rather arbitrary, particularly for the more complex applications programs. In some programs the particular set of key strokes for a given command can actually change depending on what portion of the application program is being used in a given time.
A further problem results from the fact that there are no standards among the large number of software vendors for application program command structures or for what set of key strokes should correspond to a given command. Therefore, it is necessary for the user to learn a whole set of commands anew for each application program which he needs to use. Although software vendors make strong claims for the "user friendliness" of their personal computer software products, even an experienced personal computer user requires a good deal of effort to learn how to take advantage of most of the capabilities of the more powerful application programs. This complexity intimidates many personal computer users, especially those who need to use a particular application program only occasionally and who are, in effect, faced with relearning how to use the program each time. These user interface problems have resulted in typical personal computer users being able to use only a small portion of the capabilities of the application programs available to them and in many personal computers sitting unused on desks.
Personal computer and software vendors have tried to make their systems easier and more efficient, at least for experienced users, by providing the capability of having a number of user defined macro-instructions (macros) which each correspond to a frequently used subroutine that can be called up by a single key stroke. Such macro-instruction capability is sometimes built into the personal computer, in which case a portion of the RAM memory is set aside for storing the subroutines corresponding to the macros. Some application programs also have a built-in macro-instruction capability in which case the storage of the macros in RAM memory and its integration with the overall software systems is handled by the application program. Separate macro instruction application programs are also available which are loaded into the computer and used in conjunction with the main application program.
A number of problems exist with each of these techniques which limit their utility, particularly for the occasional user. A set of macro-instructions is usable only with a given application program so that a different set must be generated and remembered by the user for each one. If extensive use is made of macros for a given application program, users must remember and select from a large number of alternatives each time they desire to enter a macro. In addition since the subroutines corresponding to the macros are stored in the main RAM memory they reduce the amount of memory available for the application program. When a separate macro-instruction program is used care must be exercised so that the macro-instruction program and the main application program do not try to use the same portions of memory. In addition, if a particular key is assigned to call up a macro, it can no longer be used for its normal function, thereby resulting in a loss of functionality.
The use of macros does little to address the above-discussed problems of the occasional user, and in many instances may exacerbate them. Not only must the user remember the standard set of commands for the particular application program, he must deal with the macros as well.
Other personal computers, such as the "Adam" computer manufactured by Coleco, have a plurality of "soft keys" on the keyboard each associated with a particular area of the CRT display screen. The application program on the computer is structure so that sets of options are provided to the user at appropriate times during the execution of the application program by displaying the names of the options in the areas of the display corresponding to the soft keys. The user selects an option by depressing the appropriate soft key which in turn causes the application program to execute the routine which implements the desired function. The options presented to the user and therefore the function commanded by striking of a soft key changes depending on what is being done by the application program
In a similar manner application programs using a mouse present options to the user either by menus or icons displayed on the screen. The user selects a function by operating the mouse to position an on-screen pointer adjacent to a selected function and depressing a select button. The menu and icons presented can change to correspond to the options available at that point in the application program operation.
The soft key and mouse techniques are effective in making application programs that incorporate them easier to learn. There are, however, a number of problems associated with each of them. Since the subroutines corresponding to the icons and soft keys are incorporated in the application program, making any change in them requires consideration of the effect of the change on the operation of the entire program. It is therefore generally impossible to permit the user, no matter how knowledgeable, to make any modifications. In addition entering commands with a mouse is much slower than a keyboard for an experienced user. These techniques are also expensive in terms of computer memory and processing speed. Application programs incorporating them are generally more complex, more demanding of memory and more expensive than they would otherwise be.
A further problem is that soft key and mouse techniques normally are not able to handle some important user controlled functions of the application program such as cursor control which must be done from the keyboard with the problems discussed above of non-intuitive commands and commands that vary from program to program and within a given program.
The keyboard is a very rigorously defined interface in a personal computer. The keystroke signals generated by the depression of the keys are defined by the computer manufacturer and all application programs must conform to them. All application program functions are accessible from the keyboard. In addition, application programs are generally configured in such a way that they can not be modified or have their integrity affected by commands or codes entered from the keyboard.